import request from '@/utils/request'
import qs from 'qs'

// 查询套餐审核列表
export function listAudit(query) {
  return request({
    url: '/workflow/audit/list',
    method: 'get',
    params: query
  })
}

// 查询套餐审核详细
export function getAudit(id) {
  return request({
    url: '/workflow/audit/' + id,
    method: 'get'
  })
}

// 新增套餐审核
export function addAudit(data) {
  return request({
    url: '/workflow/audit',
    method: 'post',
    data: data
  })
}

// 修改套餐审核
export function updateAudit(data) {
  return request({
    url: '/workflow/audit',
    method: 'put',
    data: data
  })
}

// 删除套餐审核
export function delAudit(id) {
  return request({
    url: '/workflow/audit/' + id,
    method: 'delete'
  })
}


/*
qs == query string
将Json 参数序列化为{aa:aa,bb:bb} => aa=aa&bb=bb
 */

// 开始审核
export function startAudit(id, info) {
  // axios 对参数的处理只需要区分get请求和其他请求
  // get 请求由于没有请求体, 所有参数都是url查询参数, 因此后端正常接收即可
  // 其他类型请求, axios 默认都是以 json 格式提交到后台去的, 如果后台想接收就必须用对象或集合, 且在前面贴上 @RequestBody 注解
  // 如果希望 axios 发送其他请求时也使用表单数据提交, 则需要在发请求时做如下操作

  let params = {id, info} // 转换为 id=1&info=xxxx
  let formParams = qs.stringify(params, {indices: false});

  return request({
    url: '/workflow/audit/audit',
    data: formParams,
    headers: {'content-type': 'application/x-www-form-urlencoded'}, // 表单参数
    method: 'post'
  })
}
// 查看流程进度
export function getProcessingImage(instanceId) {
  return request({
    url: '/workflow/audit/processing/image',
    params: {instanceId},
    method: 'get'
  })
}

// 取消申请
export function cancel(id, reason) {
  let params = {id, reason}
  let formParams = qs.stringify(params, {indices: false});

  return request({
    url: '/workflow/audit/cancel',
    data: formParams,
    headers: {'content-type': 'application/x-www-form-urlencoded'}, // 表单参数
    method: 'post'
  })
}


// 审批功能
export function doAudit(params) {
  let formParams = qs.stringify(params, {indices: false});

  return request({
    url: '/workflow/audit/doAudit',
    data: formParams,
    headers: {'content-type': 'application/x-www-form-urlencoded'}, // 表单参数
    method: 'post'
  })
}

// 重新审核
export function reapply(params) {
  let formParams = qs.stringify(params, {indices: false});

  return request({
    url: '/workflow/audit/reapply',
    data: formParams,
    headers: {'content-type': 'application/x-www-form-urlencoded'}, // 表单参数
    method: 'post'
  })
}
